create type m4o_context
/
begin
  execute immediate 'drop type m4o_module force';
exception
  when others then null;
end;
/

create or replace type m4o_module as object (
  v_name varchar2(30),
  -- ===========================================================================
  -- create a plsql context for a procedure
  member function proc(i_name   in varchar2)
  return m4o_context,
  -- ===========================================================================
  -- create a plsql context for a procedure
  member function proc(i_name   in varchar2,
                       i_args   in m4o_v2tab)
  return m4o_context
)
/
